package chain;

import model.Classificacao;
import model.Paciente;

public class MetodoIAC extends AbstractMetodoHandler {
	private double iac = 0;
	private String condicao;

	@Override
	public boolean accept(final Paciente paciente) {
		return paciente.getAltura() > 0 && paciente.getPeso() > 0
				&& (paciente.getSexo() == 'F' || paciente.getSexo() == 'M');
	}

	@Override
	public void fazerCalculo(final Paciente paciente) {
		this.iac = (paciente.getQuadril() / (paciente.getAltura() * Math
				.sqrt(paciente.getAltura())));
	}

	@Override
	public void classificar(Paciente paciente) throws Exception {
		if (paciente.getSexo() == 'F') {
			if (this.iac >= 20.99999 && this.iac <= 32) {
				this.condicao = "Normal";
			} else if (this.iac > 32 && this.iac <= 38) {
				this.condicao = "Sobrepeso";
			} else if (this.iac > 38) {
				this.condicao = "Obesidade";
			}
		} else if (paciente.getSexo() == 'M') {
			if (this.iac >= 8 && this.iac <= 20) {
				this.condicao = "Normal";
			} else if (this.iac > 20.0 && this.iac <= 25) {
				this.condicao = "Sobrepeso";
			} else if (this.iac > 25) {
				this.condicao = "Obesida" + "de";
			}
		}

		paciente.addClassificacao(Classificacao.classificacao()
				.comMetodo("IAC").comValor(this.iac).comCondicao(this.condicao)
				.build());
	}
}